package com.info33.platform.system.dic.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.info33.platform.common.mvc.vo.Result;
import com.info33.platform.system.dic.dto.SysDicDTO;
import com.info33.platform.system.dic.entity.SysDic;
import com.info33.platform.system.dic.vo.SysDicVO;

import java.util.List;

/**
 * 系统 - 字典 v2
 *
 * @author nyj2one
 * @since 2022-11-23 11:08:39
 */
public interface SysDicService extends IService<SysDic> {

    /**
     * pc 分页
     *
     * @param page 分页对象
     * @param dto  入参
     * @return vo
     */
    IPage<SysDicVO> pcPage(
            Page<SysDic> page,
            SysDicDTO dto);

    /**
     * 新增
     *
     * @param dto -
     * @return -
     */
    Result<Object> pcAdd(SysDicDTO dto);

    /**
     * 修改
     *
     * @param dto -
     * @return -
     */
    Result<Object> pcEdit(SysDicDTO dto);

    /**
     * 删除
     *
     * @param id -
     * @return -
     */
    Result<Object> pcRemove(Long id);

    /**
     * 树结构
     *
     * @param modIndex -
     * @return -
     */
    List<SysDicVO> pcTree(String modIndex);

    /**
     * 树结构转换为列表
     *
     * @param modIndex -
     * @return -
     */
    List<SysDicVO> pcList(String modIndex);

    /**
     * 获取多个索引的字典列表
     *
     * @param modIndexes 索引数组
     * @return -
     */
    List<List<SysDicVO>> pcListByMods(String... modIndexes);

    /**
     * 列表
     *
     * @param dto -
     * @return -
     */
    List<SysDicVO> openList(SysDicDTO dto);

    /**
     * 树结构
     *
     * @param dto -
     * @return -
     */
    List<SysDicVO> openTree(SysDicDTO dto);

    /**
     * 获取多个索引的字典列表
     *
     * @param dto        -
     * @param modIndexes 模块索引值
     * @return -
     */
    List<List<SysDicVO>> openListByMods(
            SysDicDTO dto,
            String... modIndexes);
}
